昨天我們讓 Line Bot 可以成功回應使用者驗證碼了,但是這樣只要任何人加入 Line Bot 都可以獲取驗證碼! 雖然只獲取驗證碼也不一定能做什麼事,但總是以資訊安全觀點來說不太好,所以今天開始要幫驗證碼小幫手加上身份驗證的功能!
那麼今天就來研究要怎麼產生不重複的驗證碼吧!
UUID 具有識別資訊的唯一性,用來作為產生不重複驗證碼的基底再適合不過了
通用唯一辨識碼(英語:Universally Unique Identifier,縮寫:UUID)是用於電腦體系中以辨識資訊的一個128位元識別碼。根據標準方法生成,不依賴中央機構的註冊和分配,UUID具有唯一性,這與其他大多數編號方案不同。重複UUID碼概率接近零,可以忽略不計。
如何用 JavaScript 產生 UUID / GUID? | Summer。桑莫。夏天
p.s Summer 大大的文章惠我良多,推薦各位閱讀!
看完文件後我們可以得知,使用 Math.random()
就可以得到最基本的UUID,只是可能需要過濾重複的數值。因為我們只是要產生不重複的驗證碼,所以只要用 Math.random()
產出多組8碼驗證碼,再刪除重複的值即可。
建立一個 generateVerificationCode.gs 內容如下:
(1 + Math.random()) * 0x10000
產生一個範圍在 65536~131072 (不包含 131072) 的浮點數
function generateVerificationCode() {
var amount = 10;
var verificationCode = [];
var i = 0;
var front = "";
var end = "";
while ( i < amount) {
front = (((1 + Math.random()) * 0x10000)|0).toString(16).substring(1);
end = (((1 + Math.random()) * 0x10000)|0).toString(16).substring(1);
verificationCode.push(front+end);
i++;
}
var uniqueVerificationCode = [...new Set(verificationCode)]
Logger.log(uniqueVerificationCode)
}
今天就先到這裡~明天有颱風又要補班讓心情不美麗,但希望颱風不要造成災害!
明天會繼續完成接下來的流程~